package org.rubens.bonoloto;

/**
 *
 * @author Ruben Sancho <sancho.ruben@gmail.com>
 * @version 23/01/2012
 * 
 */
public class ListaNumeros {
    /**
     * Primer elemento de la lista
     */
    public Numero primero = null;
    
    
    /**
     * Comprueba si la lista está vacía
     * @return boolean
     */
    public boolean listaVacia(){
        boolean estaVacia = false;
        
        if (primero == null){
            estaVacia = true;
        }
        return estaVacia;
    }
    
    /**
     * Inserta un elemento Numero nuevo en la lista
     * @param num
     */
    public void insertaNumero(Numero num){
        if (listaVacia()){
            primero = num;
        } else {
            num.sig = primero;
            primero = num;            
        }
    }
    
    /**
     * Imprime la lista de números tachando los aciertos
     */
    public void imprimir(){
        Numero aux;
        
        if (listaVacia()){
            System.out.println("No se ha generado ninguna combinación.");
        } else {
            aux = primero;
            while (aux != null){
                if (aux.acertado){
                    System.out.print("XX ");
                } else {
                    System.out.print(aux.numero + " ");
                }
                aux = aux.sig;
            }
            System.out.println("");
        }
    }

    /**
     * Marca el valor introducido como acertado
     * 
     * @param apuesta
     */
    public void marcaApuesta(int apuesta){
        Numero aux;
        boolean acierto = false;
        
        aux = primero;
        while (aux != null){
            if (aux.numero == apuesta && !aux.acertado){
                aux.acertado = true;
                acierto = true;
            }
            aux = aux.sig;
        }            

        if (!acierto){
            System.out.println("Número " + apuesta + " no existe."
                    + "");
        }
    }
    
    /**
     * Comprueba si se han acertado todos los resultados
     * @return boolean
     */
    public boolean esGanadora(){
        boolean ganadora = true;
        Numero aux;
        
        aux = primero;
        while (aux != null){
            if (aux.acertado == false){
                ganadora = false;
                break;
            }
            aux = aux.sig;
        }   
        
        return ganadora;
    }
}
